package com.example.dt;

import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

//泛型用从左到右分别表示 //1.传入url参数类型，2.一般为Void对象(有进度条的需求才使用),3.doInBackGround方法返回值类型
class GetItemProductTask extends AsyncTask<String,Void,String> {

        //需要传入内容的控件    
        private String appId;
        private String channelName;
        private String token;

        //构造器
        public GetItemProductTask(String appId, String channelName, String token) {
                this.appId = appId;
                this.channelName = channelName;
                this.token = token;
        }

        //负责调用api接口接收数据的方法　　 //该方法里代码直接复制即可，该方法获得的json数据会自动传入onPostExecute方法
        @Override
        protected String doInBackground(String... strings) {
                try {
                        HttpURLConnection con = (HttpURLConnection) new URL(strings[0]).openConnection();
                        int code = con.getResponseCode();
                        if(code==200){
                                InputStream is = con.getInputStream();
                                ByteArrayOutputStream out = new ByteArrayOutputStream();
                                int n = 0;
                                byte[] buf = new byte[1024];
                                while((n=is.read(buf))!=-1) {
                                        out.write(buf, 0, n);
                                }
                                String str = out.toString("UTF-8");
                                return str;
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
                return null;
        }

        //负责操作数据的方法
        //doInBackground方法获得的数据会自动传到该方法
        @Override
        protected void onPostExecute(String json) {
                //使用Gson解析json数据转Map对象
                Map<String,String> map = new Gson().fromJson(json, Map.class);
                if (map!=null){
                        String appId=new String(map.get("appid"));
                        String channelName=new String(map.get("channel_ame"));
                        String token=new String(map.get("token"));
                }

        }
}